/** 
 * Grunt 入口文件
 * 用于定义一些需要Grunt自动执行的任务
 * 需要导出一个函数
 * 此函数接受一个grunt的形参，内部提供一些常见任务可以用到的api
*/
const sass = require('sass')
const loadGruntTasks = require('load-grunt-tasks')
module.exports = grunt => {
    // grunt.registerTask('foo', () => {
    //     console.log('hello')
    // })

    // grunt.registerTask('bar', '任务描述', () => {
    //     console.log('other')
    // })

    // // 默认任务
    // // grunt.registerTask('default', () => {
    // //     console.log('default')
    // // })

    // grunt.registerTask('default', ['foo', 'bad', 'bar'])

    // grunt.registerTask('async-task', function() {
    //     const done = this.async()
    //     setTimeout(() => {
    //         console.log('finsh')
    //         done()
    //     },1000)
    // })

    /** 
     * 标记任务失败
    */
    // grunt.registerTask('bad', () => {
    //     console.log('bad')
    //     return false
    // })

    // grunt.registerTask('bad-async', function() {
    //     const done = this.async()
    //     setTimeout(() => {
    //         console.log('bad finsh')
    //         done(false)
    //     },1000)
    // })

    // grunt.initConfig({
    //     foo: 'bar'
    // })

    // grunt.registerTask('foo', () => {
    //     console.log(grunt.config('foo'))
    // })



    /** 
     * 多目标模式任务
     * yarn grunt build:css
    */
//    grunt.initConfig({
//         build: {
//             options: {
//                 foo: 'bar'
//             },
//             css: '1',
//             js: '2'
//         }
//     })
//     grunt.registerMultiTask('build', function () {
//         console.log('build task')
//         console.log(this.options())
//         console.log(this.target)
//         console.log(this.data)
//     })

    /** 
     * Grunt 插件使用
    */

    // grunt.initConfig({
    //     clean: {
    //         temp: 'temp/app.js'
    //     }
    // })
    // grunt.loadNpmTasks('grunt-contrib-clean')


    grunt.initConfig({
        sass: {
            options: {
                implementation: sass
            },
            main: {
                files: {
                    'dist/css/main.css': 'src/scss/main.scss'
                }
            }
        },
        babel: {
            options: {
                presets: ['@babel/preset-env']
            },
            main: {
                files: {
                    'dist/js/app.js': 'src/js/app.js'
                }
            }
        }
    })
    // grunt.loadNpmTasks('grunt-sass')
    loadGruntTasks(grunt) //自动加载所有的grunt 插件中的任务

}